var express = require('express');
var router = express.Router();
var formidable = require('formidable');
var fs = require('fs-extra')
var User = require("../../mongodb/schema/user.js");

router.get('/get', function(req, res, next) {
    

	  var order=req.query.order,
      data=req.query.data;
  


  
   switch(order)
   {
   	
   	case 'cloudReg1712':
			    let user = new User({
			        user : data.user,                 //用户账号
			        password: data.password,                            //密码
			        zone: 0,     
			        zoneMax:10000000000,//年龄
			        logindate : new Date()                      //最近登录时间
			    });
			    user.save(function (err, r) {
			
			        if (err) {	
			           // console.log("Error:" + err);
			            res.json(false)
			        }
			        else {
			        	
			        //开始操作文件	
			       fs.ensureDir('public/cloud/'+data.user,function  (e) {
			       	if(e){
			       		console.log(e)
			       	}else{
			       		  res.json(true)	
			       	}
			       	
			       })	

			        }
			
			    })
			    
	    

   	break;
   	
   	
   		case 'cloudLogin':
				  
				
				  
				 let pw=req.query.password
				
				   	var query = {
						user:req.query.user,
						password:pw
					};
				   	
				
				   	
			     	User.find(query,function  (err,docs) {
					
					if(err){
						   console.log(err)
						   res.json(err)
					}else if(docs==""){
						   res.render('back',{
						   	message:'账号密码不存在'
						   })
					}
					else{
						req.session.user=query.user
					
						res.render('cloud/view',{
							user:query.user,
							
						})
					}
					
				    });
				   	
				   	break;
   	
   	
   	
   	
   	
   	    case 'getFile':
              
              
              if(req.session.user){
              	 fs.readdir('public/cloud/' + data, function(err, files) {

				if(err) {
					return console.error(err);
				}
                      
                   
				res.json(files)
			});
              }else{
              	console.log('有人非法入侵')
              }
       
   
 
    	break;
    	
    	
    	case 'jumpFile':
           
       let userc=req.query.user;
            res.render('cloud/view',{
              	user:userc,
            })

    	break;
    	
    	
    	case 'deFile':
   	
    	
    	
    	for(let i of data.arry){
    		
    		 fs.remove('public/cloud/' + data.user+'/'+i, function(err) {
			  if (err) return console.error(err)

			 
			   
			})
    		 
    	}
    	 res.json(true)
    	break;
    	
    	
    	case 'newFile':
   	
    	var file ='public/cloud/' + data.user+'/'+data.val
    	
    	if(data.val.lastIndexOf('.')==-1){
    		fs.ensureDir(file, function(err) {
		    console.log(err) // => null 
		  //dir has now been created, including the directory it is to be placed in 
		    });
    	}else{
    		fs.ensureFile(file, function(err) {
			  console.log(err) // => null 
			  //file has now been created, including the directory it is to be placed in 
			});
    	}
			
		
    	 res.json(true)
    	break;
    	
    	
    	
    	
    	case 'downloadFile':
  
    	down="cloud"+data.user+"/"+data.arry[0]
    
    	res.download(down)
   	
    	
    	break;
    	
    	case 'editFile':
    
    	fs.rename("public/cloud/"+data.user+'/'+data.oldName,"public/cloud/"+data.user+'/'+data.newName, err=>{
		 if(err){
		 console.log(err)
		 return
		 }
		 
		})
  
    	res.json(true)
    	
    	break;

   	
   	
   	
   	
   	
   	
   	
   	
   	
   	

   	
   	
   	default:
    console.log('case,default in order.js')
   	
   	
   }
  


  
  
});












router.post('/upload', function(req, res, next) {
	
	var name;


   var form = formidable.IncomingForm({
       encoding : 'utf-8',//上传编码
       uploadDir : "public/cloud/",//上传目录，指的是服务器的路径，如果不存在将会报错。
       keepExtensions : true,//保留后缀
       maxFieldsSize : 2 * 1024 * 1024//byte//最大可上传大小
   });
   var allFile=[];
   form.on('progress', function(bytesReceived, bytesExpected) {//在控制台打印文件上传进度
     var progressInfo = { 
        value: bytesReceived, 
        total: bytesExpected 
     }; 
     //console.log('[progress]: ' + JSON.stringify(progressInfo)); 
     //res.write(JSON.stringify(progressInfo)); 
   })
   .on('file', function (filed, file) {
   	
   
      allFile.push([filed, file]);//收集传过来的所有文件
   })
   .on('end', function() { 
      res.end('上传成功！'); 
   })
   .on('error', function(err) {
     console.error('上传失败：', err.message); 
     next(err); 
   })
   .parse(req,function(err, fields, files){
   	
   	name=fields.address
    
   	
     if(err){
        console.log(err);
     }
     
    // console.log(files.mf.name)
     
    
     
     allFile.forEach(function(file,index){
     	
     	
        // var fieldName=file[0];
        var types = file[1].name.split('.');
        // var date = new Date();
       //  var ms = Date.parse(date);
        var me1=types[0],
            me2='.'+String(types[types.length-1]);
        var mefile=me1+me2;
         
         
           time()
           function time () {
           	
           	mefile=me1+me2
           	fs.exists(form.uploadDir+"/"+name+'/'+mefile,function  (e) {
     	
				  if(e==false){
				  	
				  	fs.renameSync(file[1].path,form.uploadDir+"/"+name+'/'+mefile);//重命名文件，默认的文件名是带有一串编码的，我们要把它还原为它原先的名字。
				  	
				  		
				  	
				  }else{
				
				  	me1=me1+'(1)'
				
				  	setTimeout(time,10)
				  }
     	
           })
           	
           	
           }
        
           /* if(e==false){
				    	
				    	   fs.renameSync(file[1].path,form.uploadDir+"/"+name+'/'+types[0]+"."+String(types[types.length-1]));//重命名文件，默认的文件名是带有一串编码的，我们要把它还原为它原先的名字。
				    	
				    	
				    }else{
				    	  
				    	   fs.renameSync(file[1].path,form.uploadDir+"/"+name+'/'+types[0]+"."+String(types[types.length-1]));//重命名文件，默认的文件名是带有一串编码的，我们要把它还原为它原先的名字。
				    }*/
      
    
     
     
     });
     
     
     
   }); 
	
	
});
	
	
	
	
	
	
	
	
	
	
	

























module.exports = router;
